import { integer, text, sqliteTable } from 'drizzle-orm/sqlite-core'
import { InputSchemaData } from '@shared/types/ai'

export const agent = sqliteTable('ai_agent', {
  mark: text().primaryKey().notNull(),
  name: text().notNull(),
  icon: text()
})

export const modelChat = sqliteTable('ai_model_chat', {
  mark: text().primaryKey().notNull(),
  name: text().notNull(),
  url: text().notNull(),
  model: text().notNull()
})

export const modelVector = sqliteTable('ai_model_vector', {
  mark: text().primaryKey().notNull(),
  name: text().notNull(),
  url: text().notNull(),
  model: text().notNull()
})

export const pluginLocal = sqliteTable('ai_plugin_local', {
  mark: text().primaryKey().notNull(),
  name: text().notNull()
})

export const pluginLocalTool = sqliteTable('ai_plugin_local_tool', {
  mark: text().primaryKey().notNull(),
  name: text().notNull(),
  pluginMark: text('plugin_mark').notNull(),
  description: text().notNull(),
  inputSchema: text('input_schema', { mode: 'json' }).$type<InputSchemaData[]>().notNull(),
  outputSchema: text('output_schema').notNull()
})

export const pluginCloud = sqliteTable('ai_plugin_cloud', {
  mark: text().primaryKey().notNull(),
  name: text().notNull(),
  url: text().notNull()
})

export const pluginCloudTool = sqliteTable('ai_plugin_cloud_tool', {
  mark: text().primaryKey().notNull(),
  name: text().notNull(),
  plugin_mark: text().notNull(),
  path: text().notNull()
})

export const users = sqliteTable('ai_user', {
  id: integer('id').primaryKey({ autoIncrement: true }).notNull(),
  name: text('name').notNull(),
  email: text('email').notNull()
})
